Skip to content

bluetooth: Add support for Channel Classification - #30825

Draft
weeTike wants to merge 2 commits into
nrfconnect:mainfrom
weeTike:channel_classification
Draft

bluetooth: Add support for Channel Classification#30825
weeTike wants to merge 2 commits into
nrfconnect:mainfrom
weeTike:channel_classification

Conversation

@weeTike

@weeTike weeTike commented Aug 20, 2026

Copy link
Copy Markdown
Contributor
  • bluetooth: Add support for Channel Classification

    This adds the Channel Classification feature which the central can use
    to receive channel classification reports from the peripheral.

  • samples: bluetooth: Add Channel Classification sample

    This sample demonstrates a usecase for channel classification.
    The sample shows the central receiving channel classification reports
    from the peripheral and applying them in a channel map update.

@NordicBuilder NordicBuilder added doc-required PR must not be merged without tech writer approval. changelog labels Aug 20, 2026
@weeTike
weeTike force-pushed the channel_classification branch from 8c1e51a to b15b097 Compare August 20, 2026 14:28
@NordicBuilder

NordicBuilder commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

CI Information

To view the history of this post, click the 'edited' button above
Build number: 6

Inputs:

Sources:

more details

Github labels

Enabled Name Description
ci-disabled Disable the ci execution
ci-all-test Run all of ci, no test spec filtering will be done
ci-force-downstream Force execution of downstream even if twister fails
ci-run-twister Force run twister
ci-run-zephyr-twister Force run zephyr twister
ci-run-draft Run CI on draft pull requests
List of changed files detected by CI (0)

Outputs:

Toolchain

Version:
Build docker image:

Test Spec & Results: ✅ Success; ❌ Failure; 🟠 Queued; 🟡 Progress; ◻️ Skipped; ⚠️ Quarantine

  • ❌ Toolchain
  • ❌ Build twister
  • ❌ Integration tests

Note: This message is automatically posted and updated by the CI

@weeTike
weeTike force-pushed the channel_classification branch 3 times, most recently from 9429fd6 to b7306ad Compare August 20, 2026 16:21
This adds the Channel Classification feature which the central can use
to receive channel classification reports from the peripheral.

Signed-off-by: Timothy Keys <timothy.keys@nordicsemi.no>
This sample demonstrates a usecase for channel classification.
The sample shows the central receiving channel classification reports
from the peripheral and applying them in a channel map update.

Signed-off-by: Timothy Keys <timothy.keys@nordicsemi.no>
@weeTike
weeTike force-pushed the channel_classification branch from b7306ad to cc509a1 Compare August 21, 2026 07:53
@github-actions

Copy link
Copy Markdown

@richabp richabp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Initial review.

Comment on lines 176 to +178
* Added the :kconfig:option:`CONFIG_BT_HCI_SUPPORT_DEPRECATED_COMMANDS` Kconfig option to support deprecated HCI commands.
The option is disabled by default, and enabling it may cause deprecation warnings or errors during compilation.
* Added support for LE Channel Classification in the SoftDevice Controller through the :kconfig:option:`CONFIG_BT_CTLR_CHANNEL_CLASSIFICATION` Kconfig option.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Added the :kconfig:option:`CONFIG_BT_HCI_SUPPORT_DEPRECATED_COMMANDS` Kconfig option to support deprecated HCI commands.
The option is disabled by default, and enabling it may cause deprecation warnings or errors during compilation.
* Added support for LE Channel Classification in the SoftDevice Controller through the :kconfig:option:`CONFIG_BT_CTLR_CHANNEL_CLASSIFICATION` Kconfig option.
* Added:
* The :kconfig:option:`CONFIG_BT_HCI_SUPPORT_DEPRECATED_COMMANDS` Kconfig option to support deprecated HCI commands.
The option is disabled by default, and enabling it may cause deprecation warnings or errors during compilation.
* Experimental support for the LE Channel Classification feature in the SoftDevice Controller using the :kconfig:option:`CONFIG_BT_CTLR_CHANNEL_CLASSIFICATION` Kconfig option.

* Updated the minimum supported connection interval from 875 µs to 750 µs in the HID SCI configuration.
* Enabled the Frame Space Update feature in the single peripheral HID SCI configuration.

* Added the :ref:`ble_channel_classification` sample that demonstrates peripheral-initiated channel map updates and central reception of channel classification reports.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please move this entry to line 319 as the first entry under Bluetooth samples.

.. ncs-sample::
:title: Bluetooth: Channel Classification

This sample demonstrates LE Channel Classification reporting between a central and a peripheral.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This sample demonstrates LE Channel Classification reporting between a central and a peripheral.
The Channel Classification sample demonstrates LE Channel Classification reporting between a central and a peripheral.


When connected, the peripheral cycles through predefined host channel maps, changing every five seconds.

The central enables channel classification reporting using :c:func:`hci_vs_sdc_channel_reporting_enable` and handles the received reports in a local HCI VS event callback.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The central enables channel classification reporting using :c:func:`hci_vs_sdc_channel_reporting_enable` and handles the received reports in a local HCI VS event callback.
The central enables channel classification reporting using the :c:func:`hci_vs_sdc_channel_reporting_enable` function and handles the received reports in a local HCI VS event callback.

Overview
********

When connected, the peripheral cycles through predefined host channel maps, changing every five seconds.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
When connected, the peripheral cycles through predefined host channel maps, changing every five seconds.
When connected, the peripheral cycles through predefined host channel maps, changing the active channel map every five seconds.

#. In the other terminal emulator, type ``p`` to start the application in the peripheral role.
#. Observe that the kits establish a connection.
#. On the peripheral, observe a new channel map printed every five seconds.
#. On the central, observe matching channel maps applied from the received classification reports.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
#. On the central, observe matching channel maps applied from the received classification reports.
#. Observe matching channel maps applied on the central from the received classification reports.

Sample output
=============

* Example peripheral output::

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Example peripheral output::
* The following is an example of the peripheral output:

=============

* Example peripheral output::

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use .. code-block:: c directive.

I: Using channel map 2
I: Peripheral channel map df 7f ff fd 1f

* Example central output::

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Example central output::
* The following is an example of the central output:

I: Peripheral channel map df 7f ff fd 1f

* Example central output::

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Please use .. code-block:: c directive.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog doc-required PR must not be merged without tech writer approval.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants